import { defineStore } from 'pinia'
import request from '@/utils/request'
import { Profile, ApiRes } from '@/types/data'
import { setProfile, getProfile, removeProfile } from '@/utils/storage'
const useUserStore = defineStore('user', {
  state() {
    return {
      profile: getProfile() as Profile
    }
  },
  actions: {
    //账号密码登录
    async login(account: string, password: string) {
      const res = await request.post<ApiRes<Profile>>('/login', { account, password })
      this.profile = res.data.result
      setProfile(res.data.result)
    },
    //手机验证码登录
    async loginMobile(mobile: string, code: string) {
      const res = await request.post<ApiRes<Profile>>('/login/code', { mobile, code })
      this.profile = res.data.result
      setProfile(res.data.result)
    },
    //获取验证码
    async sendMobileMsg(mobile: string) {
      await request.get('/login/code', { params: { mobile } })
    },
    // 点击退出
    async logout() {
      this.profile = {} as Profile
      removeProfile()
    },
    //第三方登录
    async qqLogin(openID: string) {
      const res = await request.post<ApiRes<Profile>>('/login/social', {
        unionId: openID,
        source: 6
      })
      this.profile = res.data.result
      setProfile(res.data.result)
    },
    // 绑定qq的短信验证码
    async sendQQBindMsg(mobile: string) {
      await request.get('/login/social/code', {
        params: {
          mobile
        }
      })
    },
    //数据绑定
    async qqBindLogin(openId: string, mobile: string, code: string) {
      const res = await request.post<ApiRes<Profile>>('/login/social/bind', {
        mobile,
        code,
        unionId: openId
      })
      // 1. 保存用户信息到 state 中
      this.profile = res.data.result
      setProfile(res.data.result)
    },
    // 获取短信验证码
    // 绑定qq的短信验证码
    async sendQQPathMsg(mobile: string) {
      await request.get('/register/code', {
        params: {
          mobile
        }
      })
    },

    async qqPatchLogin(data: any) {
      const res = await request.post<ApiRes<Profile>>(
        `/login/social/${data.openId}/complement`,
        data
      )
      // 1. 保存用户信息到 state 中
      this.profile = res.data.result
      setProfile(res.data.result)
    }
  },
  getters: {}
})

export default useUserStore
